package com.czy.owner.api;


import com.czy.owner.entity.AccountHistoryModel;
import com.czy.owner.entity.AccountInfoModel;
import com.czy.owner.entity.BannerToActivityModel;
import com.czy.owner.entity.BaseCurrencyListModel;
import com.czy.owner.entity.BrandListModel;
import com.czy.owner.entity.BulletinModel;
import com.czy.owner.entity.CarInfo;
import com.czy.owner.entity.CartGoodsSpecModel;
import com.czy.owner.entity.CaseShowModel;
import com.czy.owner.entity.CategoryModel;
import com.czy.owner.entity.ChainStoresModel;
import com.czy.owner.entity.CollectionProductModel;
import com.czy.owner.entity.CommitOrderModel;
import com.czy.owner.entity.CouponsCountModel;
import com.czy.owner.entity.DetectionResult;
import com.czy.owner.entity.EditUserLocationModel;
import com.czy.owner.entity.EmployessModel;
import com.czy.owner.entity.FindActivityModel;
import com.czy.owner.entity.FindCarInfoModel;
import com.czy.owner.entity.FindStrategyModel;
import com.czy.owner.entity.FrameNumberModel;
import com.czy.owner.entity.GetCommentModel;
import com.czy.owner.entity.GetCouponsCenterModel;
import com.czy.owner.entity.GoodsDetailModel;
import com.czy.owner.entity.GoodsListModel;
import com.czy.owner.entity.GrowthDetailsModel;
import com.czy.owner.entity.GrowthValueDetailsList;
import com.czy.owner.entity.GrowthValueDetailsModel;
import com.czy.owner.entity.GuessYouLikeModel;
import com.czy.owner.entity.HeadLineModel;
import com.czy.owner.entity.HotShopClassifyModel;
import com.czy.owner.entity.HotWordsModel;
import com.czy.owner.entity.InsuranceCompanyEntity;
import com.czy.owner.entity.LogisticsModel;
import com.czy.owner.entity.LuckDrawModel;
import com.czy.owner.entity.MaintenanceManual;
import com.czy.owner.entity.MessageContacts;
import com.czy.owner.entity.MyPackageCardProjectDetailModel;
import com.czy.owner.entity.MyPackageCardProjectModel;
import com.czy.owner.entity.MyPackageEntity;
import com.czy.owner.entity.NearStoreListModel;
import com.czy.owner.entity.OderSerchLeatlyListModel;
import com.czy.owner.entity.OrderCountInfoModel;
import com.czy.owner.entity.OrderCouponsListModel;
import com.czy.owner.entity.OrderInfoDetailModel;
import com.czy.owner.entity.OrderSelectSubmitMode;
import com.czy.owner.entity.OrdersListModel;
import com.czy.owner.entity.PackageCardProjectModel;
import com.czy.owner.entity.PackageDetailsModel;
import com.czy.owner.entity.PackageSelectModel;
import com.czy.owner.entity.ParityClassifyModel;
import com.czy.owner.entity.ParityModel;
import com.czy.owner.entity.PriceRadioModel;
import com.czy.owner.entity.ReturnOrderInfoModel;
import com.czy.owner.entity.ReturnOrderModel;
import com.czy.owner.entity.ScopeBusinessDetailModel;
import com.czy.owner.entity.ScopeBusinessModel;
import com.czy.owner.entity.SeckillModel;
import com.czy.owner.entity.SelectBespokeListModel;
import com.czy.owner.entity.SelectOrderDetailsModel;
import com.czy.owner.entity.SelectStoreModel;
import com.czy.owner.entity.ShopBannerModel;
import com.czy.owner.entity.ShoppingCartGoodsModel;
import com.czy.owner.entity.ShoppingModel;
import com.czy.owner.entity.StoreActivityModel;
import com.czy.owner.entity.StoreBalanceModel;
import com.czy.owner.entity.StoreDataModel;
import com.czy.owner.entity.StoreDetailBannersModel;
import com.czy.owner.entity.StoreDetailInfoModel;
import com.czy.owner.entity.StoreGoodsListTagEntity;
import com.czy.owner.entity.StorePackageDetailModel;
import com.czy.owner.entity.StorePackageEntity;
import com.czy.owner.entity.StrategyListModel;
import com.czy.owner.entity.TestingDetailsModel;
import com.czy.owner.entity.TestingModel;
import com.czy.owner.entity.TextingListModel;
import com.czy.owner.entity.UptoTodayModel;
import com.czy.owner.entity.UserCollectInfoModel;
import com.czy.owner.entity.UserInfoModel;
import com.czy.owner.entity.UserLocationModel;
import com.czy.owner.entity.UserOrderCoupon;
import com.czy.owner.entity.WorkOrderDetailsModel;
import com.czy.owner.entity.WorkOrderModel;
import com.czy.owner.entity.WorkShowEntity;
import com.czy.owner.global.Constants;
import com.czy.owner.net.api.BaseResultEntity;
import com.google.gson.JsonObject;

import java.util.List;
import java.util.Map;

import okhttp3.MultipartBody;
import okhttp3.ResponseBody;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.Multipart;
import retrofit2.http.POST;
import retrofit2.http.Part;
import retrofit2.http.QueryMap;
import rx.Observable;


/**
 * 测试接口service-post相关
 * Created by wangyang on 2017/5/02.
 */

public interface HttpPostService {
    /**
     * @GET 表明这是get请求
     * @POST 表明这是post请求
     * @PUT 表明这是put请求
     * @DELETE 表明这是delete请求
     * @PATCH 表明这是一个patch请求，该请求是对put请求的补充，用于更新局部资源
     * @HEAD 表明这是一个head请求
     * @OPTIONS 表明这是一个option请求
     * @HTTP 通用注解, 可以替换以上所有的注解，其拥有三个属性：method，path，hasBody
     * @Headers 用于添加固定请求头，可以同时添加多个。通过该注解添加的请求头不会相互覆盖，而是共同存在
     * @Header 作为方法的参数传入，用于添加不固定值的Header，该注解会更新已有的请求头
     * @Body 多用于post请求发送非表单数据, 比如想要以post方式传递json格式数据
     * @Filed 多用于post请求中表单字段, Filed和FieldMap需要FormUrlEncoded结合使用
     * @FiledMap 和@Filed作用一致，用于不确定表单参数
     * @Part 用于表单字段, Part和PartMap与Multipart注解结合使用, 适合文件上传的情况
     * @PartMap 用于表单字段, 默认接受的类型是Map<String,REquestBody>，可用于实现多文件上传
     * <p>
     * Part标志上文的内容可以是富媒体形势，比如上传一张图片，上传一段音乐，即它多用于字节流传输。
     * 而Filed则相对简单些，通常是字符串键值对。
     * </p>
     * Part标志上文的内容可以是富媒体形势，比如上传一张图片，上传一段音乐，即它多用于字节流传输。
     * 而Filed则相对简单些，通常是字符串键值对。
     * @Path 用于url中的占位符,{占位符}和PATH只用在URL的path部分，url中的参数使用Query和QueryMap代替，保证接口定义的简洁
     * @Query 用于Get中指定参数
     * @QueryMap 和Query使用类似
     * @Url 指定请求路径
     */

    @POST(Constants.OWN_OWNERSSHOPBANNER)
    Observable<BaseResultEntity<List<ShopBannerModel>>> getShopBannerApi();


    @POST(Constants.OWN_UPDATE)
    Observable<BaseResultEntity> getOwnUpdateApi(@QueryMap Map<String, Object> maps);

    @POST(Constants.OWN_CARS)
    Observable<BaseResultEntity<List<CarInfo>>> getOwnerCars(@QueryMap Map<String, Object> maps);

    @FormUrlEncoded
    @POST(Constants.OWN_USER_INFO)
    Observable<BaseResultEntity<UserInfoModel>> getOwnUserInfoApi(@Field("session") String session);

    @FormUrlEncoded
    @POST(Constants.OWN_INFO_ACCOUNTINFO)
    Observable<BaseResultEntity<AccountInfoModel>> getOwnAccountInfoApi(@Field("session") String session);

    @FormUrlEncoded
    @POST(Constants.OWN_SHOP_GETSERICEPACKAGELIST)
    Observable<BaseResultEntity<List<StorePackageEntity.DataBean>>> getOwnStorePackageApi(@Field("session") String session, @Field("storeId") String storeId);

    @FormUrlEncoded
    @POST(Constants.OWN_INFO_STOREBALANCE)
    Observable<BaseResultEntity<List<StoreBalanceModel>>> getOwnInfoStoreBalanceApi(@Field("session") String session);

    @FormUrlEncoded
    @POST(Constants.OWN_INFO_DATA)
    Observable<BaseResultEntity<PriceRadioModel>> getOwnInfoDataApi(@Field("infoId") String infoId, @Field("session") String session);

    @FormUrlEncoded
    @POST(Constants.OWN_INFO_USERINFOCOLLECT)
    Observable<BaseResultEntity<JsonObject>> getOwnInfoIsCollectApi(@Field("session") String session, @Field("infoId") String infoId, @Field("type") String type);


    @FormUrlEncoded
    @POST(Constants.OWN_ORDERS_GETCUSTOMER)
    Observable<BaseResultEntity<MessageContacts>> getCustomerApi(@Field("session") String session, @Field("storeId") String storeId, @Field("type") String type, @Field("userOrderId") String userOrderId);

    @FormUrlEncoded
    @POST(Constants.OWN_SHOP_ACTIVITYOTHER)
    Observable<BaseResultEntity<UptoTodayModel>> getUptoTodayApi(@Field("type") String type, @Field("session") String session);

    @FormUrlEncoded
    @POST(Constants.OWN_BANNER)
    Observable<BaseResultEntity<List<StoreDetailBannersModel>>> getOwnStoreBannerApi(@Field("session") String session, @Field("storeId") String storeId);

    @POST(Constants.OWN_ACCOUNTHISTORY)
    Observable<BaseResultEntity<List<AccountHistoryModel>>> getAccountHistoryApi(@QueryMap Map<String, Object> maps);

    @POST(Constants.OWN_PAC_MY)
    Observable<BaseResultEntity<List<MyPackageEntity>>> getOwnPacMyApi(@QueryMap Map<String, Object> maps);

    @POST(Constants.OWN_PAC_MYINF)
    Observable<BaseResultEntity<MyPackageCardProjectDetailModel>> getOwnPacMyInfoApi(@QueryMap Map<String, Object> maps);

    @POST(Constants.OWN_PAC_STORESERVICEPACKAGELIST)
    Observable<BaseResultEntity<List<PackageCardProjectModel>>> getOwnPacStoreServiceMyApi(@QueryMap Map<String, Object> maps);

    @POST(Constants.OWN_PAC_STORESERVICEPACKAGEINF)
    Observable<BaseResultEntity<StorePackageDetailModel>> getOwnPacStoreServicePackageInfoApi(@QueryMap Map<String, Object> maps);

    @POST(Constants.OWN_COUPONSLIST)
    Observable<BaseResultEntity<CouponsCountModel>> getOwnCouponListApi(@QueryMap Map<String, Object> maps);

    @POST(Constants.OWN_INFO_STRATEGYBASELIST)
    Observable<BaseResultEntity<List<FindStrategyModel>>> getStrategyListApi(@QueryMap Map<String, Object> maps);

    @POST(Constants.OWN_COUPONS_GROUPRECEICE)
    Observable<BaseResultEntity<GetCouponsCenterModel>> getCouPonsGroupReceiveApi(@QueryMap Map<String, Object> maps);

    @POST(Constants.OWN_INFO_ACTIVITYLISTNEW)
    Observable<BaseResultEntity<List<FindActivityModel>>> getOwnInfoActivityListApi(@QueryMap Map<String, Object> maps);

    @POST(Constants.OWN_INFO_CARINFOLIST)
    Observable<BaseResultEntity<List<FindCarInfoModel>>> getOwnCarInfoApi(@QueryMap Map<String, Object> maps);

    @POST(Constants.OWN_INFO_STRATEGYLIST)
    Observable<BaseResultEntity<List<StrategyListModel>>> getStrategyMyListApi(@QueryMap Map<String, Object> maps);

    @POST(Constants.OWN_INFO_USERCOLLECT)
    Observable<BaseResultEntity> getCollectionApi(@QueryMap Map<String, Object> maps);

    @POST(Constants.OWN_CASESHOWSLIST)
    Observable<BaseResultEntity<CaseShowModel>> getCaseShowApi(@QueryMap Map<String, Object> maps);


    @POST(Constants.OWN_STORE_ACTIVITY_LIST)
    Observable<BaseResultEntity<StoreActivityModel>> getStoreActivityApi(@QueryMap Map<String, Object> maps);

    @POST(Constants.OWN_SERVICELIST)
    Observable<BaseResultEntity<List<ScopeBusinessModel>>> getScopeBusinessApi(@QueryMap Map<String, Object> maps);

    @POST(Constants.OWN_SERVICEINFO)
    Observable<BaseResultEntity<ScopeBusinessDetailModel>> getScopeBusinessDetailApi(@QueryMap Map<String, Object> maps);

    @POST(Constants.OWN_STOREINFO)
    Observable<BaseResultEntity<StoreDetailInfoModel>> getOwnerStoreInfoApi(@QueryMap Map<String, Object> maps);

    @POST(Constants.OWN_BRANCHSTORE)
    Observable<BaseResultEntity<List<ChainStoresModel>>> getBranchStoreApi(@QueryMap Map<String, Object> maps);

    @POST(Constants.OWN_STOREINFO)
    Observable<ResponseBody> getOwnerStoreStringInfoApi(@QueryMap Map<String, Object> maps);

    @POST(Constants.OWN_ORDER_EMPSTASK)
    Observable<BaseResultEntity<List<EmployessModel>>> getServiceTechnicianApi(@QueryMap Map<String, Object> maps);

    @FormUrlEncoded
    @POST(Constants.OWN_CARS)
    Observable<BaseResultEntity<List<CarInfo>>> getOrderCarsApi(@Field("session") String session);

    @POST(Constants.OWN_INFO_HEADLINESLIST)
    Observable<BaseResultEntity<List<HeadLineModel>>> getHeadLinesListApi(@QueryMap Map<String, Object> maps);

    @FormUrlEncoded
    @POST(Constants.OWN_HOME)
    Observable<BaseResultEntity<ShoppingModel>> getShoppingApi(@Field("session") String session);

    @FormUrlEncoded
    @POST(Constants.OWN_SHOP_EDITUSERLOCATION)
    Observable<BaseResultEntity<EditUserLocationModel>> getEditUserLocationApi(@Field("session") String session, @Field("userLocationId") String userLocationId);

    @FormUrlEncoded
    @POST(Constants.OWN_SHOP_USERLOCATIONLIST)
    Observable<BaseResultEntity<UserLocationModel>> getUserLocationApi(@Field("session") String session);

    @POST(Constants.OWN_SHOP_USERCOLLECTINFOLIST)
    Observable<BaseResultEntity<UserCollectInfoModel>> getUserCollectInfoApi(@QueryMap Map<String, Object> maps);

    @POST(Constants.OWN_HOTSHOP_CLASSIFY)
    Observable<BaseResultEntity<List<HotShopClassifyModel>>> getHotShopClassifyApi(@QueryMap Map<String, Object> maps);

    @POST(Constants.OWN_HOTSHOP_GOODSLIST)
    Observable<BaseResultEntity<GoodsListModel>> getHotShopGoodsListApi(@QueryMap Map<String, Object> maps);


    @POST(Constants.OWN_HOTSHOP_GETSUPGOODSLIST)
    Observable<BaseResultEntity<GoodsListModel.GoodsPageBean>> getSupGoodsListApi(@QueryMap Map<String, Object> maps);

    @POST(Constants.OWN_HOTSHOP_GETSTOREGOODSLIST)
    Observable<BaseResultEntity<GoodsListModel.GoodsPageBean>> getSupStoreGoodsListApi(@QueryMap Map<String, Object> maps);

    @POST(Constants.OWN_STORE_GOODSLIST)
    Observable<BaseResultEntity<GoodsListModel>> getStoreGoodsListApi(@QueryMap Map<String, Object> maps);

    @POST(Constants.OWN_HOTSHOP_BRANDLIST)
    Observable<BaseResultEntity<BrandListModel>> getBrandsListApi(@QueryMap Map<String, Object> maps);

    @POST(Constants.OWN_HOTSHOP_BRANDLIST_H5)
    Observable<BaseResultEntity<List<BrandListModel.BrandListBean>>> getBrandsH5ListApi(@QueryMap Map<String, Object> maps);

    @POST(Constants.OWN_STORE_BRANDLIST)
    Observable<BaseResultEntity<BrandListModel>> getStoreBrandsListApi(@QueryMap Map<String, Object> maps);

    @POST(Constants.OWN_STORE_BRANDLIST_H5)
    Observable<BaseResultEntity<List<BrandListModel.BrandListBean>>> getStoreBrandsH5ListApi(@QueryMap Map<String, Object> maps);

    @POST(Constants.OWN_HOTSHOP_GOODSDETAIL)
    Observable<BaseResultEntity<GoodsDetailModel>> getGoodsDetailApi(@QueryMap Map<String, Object> maps);

    @POST(Constants.OWN_NEARSTORES)
    Observable<BaseResultEntity<List<NearStoreListModel>>> getNearStoreList(@QueryMap Map<String, Object> maps);

    @POST(Constants.OWN_SEARCHSTORES)
    Observable<BaseResultEntity<List<NearStoreListModel>>> getSearchStoreList(@QueryMap Map<String, Object> maps);

    @POST(Constants.OWN_BIND)
    Observable<BaseResultEntity<StoreDataModel>> getBindStore(@QueryMap Map<String, Object> maps);

    @POST(Constants.OWN_MODIFY_CART)
    Observable<BaseResultEntity<String>> getModifyCart(@QueryMap Map<String, Object> maps);

    @FormUrlEncoded
    @POST(Constants.OWN_DELCARFILESRECORD)
    Observable<BaseResultEntity<Object>> DelCarFilesRecord(@Field("session") String session, @Field("carFilesRecordId") String carFilesRecordId);

    @FormUrlEncoded
    @POST(Constants.OWN_GETOWNERINS)
    Observable<BaseResultEntity<TestingModel>> getOwnerIns(@Field("session") String session, @Field("ownerId") String ownerId, @Field("page") String page, @Field("size") String size);

    @FormUrlEncoded
    @POST(Constants.OWN_OWNERINSDETAILS)
    Observable<BaseResultEntity<TestingDetailsModel>> getOwnerInsDetail(@Field("session") String session, @Field("userOrderId") String userOrderId, @Field("storeId") String storeId, @Field("flag") String flag);

    @POST(Constants.OWN_INSTALL_STORE)
    Observable<BaseResultEntity<List<SelectStoreModel>>> getInstallStore(@QueryMap Map<String, Object> maps);

    @POST(Constants.OWN_CART_LIST)
    Observable<BaseResultEntity<ShoppingCartGoodsModel>> getCartList(@QueryMap Map<String, Object> maps);

    @POST(Constants.OWN_CART_COUNT)
    Observable<BaseResultEntity<ShoppingCartGoodsModel>> getCartCount(@QueryMap Map<String, Object> maps);

    @POST(Constants.OWN_GOODS_SPEC)
    Observable<BaseResultEntity<CartGoodsSpecModel>> getGoodsSpec(@QueryMap Map<String, Object> maps);

    @POST(Constants.OWN_CARTGOODS_DELETE)
    Observable<BaseResultEntity<String>> getCartGoodsDelete(@QueryMap Map<String, Object> maps);

    @POST(Constants.OWN_SECONDKILL_LIST)
    Observable<BaseResultEntity<List<SeckillModel>>> getSeckillList(@QueryMap Map<String, Object> maps);

    @POST(Constants.OWN_HOT_WORDS)
    Observable<BaseResultEntity<List<HotWordsModel>>> getHotWords(@QueryMap Map<String, Object> maps);

    @POST(Constants.OWN_REMAIN_GOODS)
    Observable<BaseResultEntity<String>> getGoodsRemainCount(@QueryMap Map<String, Object> maps);

    @FormUrlEncoded
    @POST(Constants.OWN_INFO_RECOMMTODISCOVBANLIST)
    Observable<BaseResultEntity<List<BannerToActivityModel>>> getBannerToActivityApi(@Field("session") String session);


    //=====================================    车档案相关
    @Deprecated
    @POST(Constants.OWN_CAR_MANUAL_PARAMETER_GET)
    Observable<BaseResultEntity<CarInfo>> getOwnCarParameter(@QueryMap Map<String, Object> maps);

    @POST(Constants.OWN_CAR_MANUAL_PARAMETER_SET)
    Observable<BaseResultEntity<String>> updateOwnCarParameter(@QueryMap Map<String, Object> maps);

    @POST(Constants.OWN_CAR_MAINTENANCE_DETECTION)
    Observable<BaseResultEntity<DetectionResult>> getMaintenanceDetectionResult(@QueryMap Map<String, Object> maps);

    @POST(Constants.OWN_CAR_MAINTENANCE_MANUAL)
    Observable<BaseResultEntity<MaintenanceManual>> getMaintenanceManual(@QueryMap Map<String, Object> maps);

    @POST(Constants.OWN_CAR_MAINTENANCE_DETECTION_DETAIL)
    Observable<BaseResultEntity<List<WorkShowEntity>>> getMaintenanceDetails(@QueryMap Map<String, Object> maps);

    @POST(Constants.OWN_CAR_MAINTENANCE_WORK)
    Observable<BaseResultEntity<WorkShowEntity>> getMaintenanceWorkDetail(@QueryMap Map<String, Object> maps);

    @POST(Constants.OWN_CAR_MAINTENANCE_MANUAL_POINT)
    Observable<BaseResultEntity<WorkShowEntity>> getMaintenanceManualDetail(@QueryMap Map<String, Object> maps);

    @POST(Constants.OWN_CAR_SET_DEFAULT_CAR)
    Observable<BaseResultEntity<String>> setDefaultCar(@QueryMap Map<String, Object> maps);


    @POST(Constants.OWN_ORDERS_ORDERLIST)
    Observable<BaseResultEntity<OrdersListModel>> getOrderListApi(@QueryMap Map<String, Object> maps);

    @POST(Constants.OWN_ORDERS_RETURN_ORDERS)
    Observable<BaseResultEntity<ReturnOrderModel>> getRetunOrdersApi(@QueryMap Map<String, Object> maps);

    @FormUrlEncoded
    @POST(Constants.OWN_ORDERS_ORDERINFO)
    Observable<BaseResultEntity<OrderInfoDetailModel>> getOrderInfoDetailApi(@Field("session") String session, @Field("orderId") String orderId);

    @POST(Constants.OWN_SUBMIT_ORDER)
    Observable<BaseResultEntity<List<CommitOrderModel>>> submitOrder(@QueryMap Map<String, Object> maps);

    @POST(Constants.OWN_SHOP_SAVEUSERLOCATION)
    Observable<BaseResultEntity<Integer>> OwnShopSaveUserLocationApi(@QueryMap Map<String, Object> maps);

    @FormUrlEncoded
    @POST(Constants.OWN_SHOP_DELETEUSERLOCATION)
    Observable<BaseResultEntity> OwnShopDeleteUserLocationApi(@Field("session") String session, @Field("userLocationId") String userLocationId);

    @POST(Constants.PUB_COLLECT_FREIGHT)
    Observable<BaseResultEntity<String[]>> collectFreight(@QueryMap Map<String, Object> maps);

    @POST(Constants.OWN_GET_MALL_STATUS)
    Observable<BaseResultEntity<Boolean>> getMallStatus(@QueryMap Map<String, Object> maps);

    @POST(Constants.OWN_ORDER_COUPONS)
    Observable<BaseResultEntity<UserOrderCoupon>> getUserOrderCoupons(@QueryMap Map<String, Object> maps);

    @POST(Constants.OWN_CAR_MAINTENANCE_DETECTION_NUMBER)
    Observable<BaseResultEntity<Integer>> getMaintenanceDetectionNumber(@QueryMap Map<String, Object> maps);

    @FormUrlEncoded
    @POST(Constants.OWN_ORDERS_UPDATEORDERSTATUS)
    Observable<BaseResultEntity> getOwnOrdersUpdateStatusApi(@Field("session") String session, @Field("type") String type, @Field("orderId") String orderId);

    @FormUrlEncoded
    @POST(Constants.OWN_ORDERS_RETURN_ORDERS_INFO)
    Observable<BaseResultEntity<ReturnOrderInfoModel>> getOwnReturnOrdersInfoApi(@Field("session") String session, @Field("refundsOrderId") String refundsOrderId);

    @FormUrlEncoded
    @POST(Constants.OWN_ORDERS_REPEAL)
    Observable<BaseResultEntity> getReturnOrderRepelApi(@Field("session") String session, @Field("refundsOrderId") String refundsOrderId);

    @FormUrlEncoded
    @POST(Constants.OWN_ORDERS_COMMENTGOODS)
    Observable<BaseResultEntity<String>> getCommentGoodsApi(@Field("session") String session, @Field("json") String json);

    @POST(Constants.OWN_ORDERS_GETGOODSLOGISTICS)
    Observable<BaseResultEntity<List<LogisticsModel>>> getLogisticsInfoApi(@QueryMap Map<String, Object> maps);

    @FormUrlEncoded
    @POST(Constants.OWN_ORDERS_GETCOMMENTORDER)
    Observable<BaseResultEntity<List<GetCommentModel>>> getOwnCommentOrderApi(@Field("session") String session, @Field("userOrderId") String userOrderId);

    @POST(Constants.OWN_SHOP_USERCOLLECTGOODLIST)
    Observable<BaseResultEntity<CollectionProductModel>> getCollectionProductApi(@QueryMap Map<String, Object> maps);

    @FormUrlEncoded
    @POST(Constants.OWN_INFO_COUNTINFO)
    Observable<BaseResultEntity<OrderCountInfoModel>> getOwnOrderCountInfoApi(@Field("session") String session, @Field("storeId") String storeId, @Field("closeMall") String closeMall);

    @POST(Constants.OWN_SHOP_GUESSYOULIKE)
    Observable<BaseResultEntity<GuessYouLikeModel>> getGuessYouLikeApi(@QueryMap Map<String, Object> maps);


    @POST(Constants.OWN_INSURANCES)
    Observable<BaseResultEntity<List<InsuranceCompanyEntity>>> GetInsurances();

    @POST(Constants.PUB_SYSTEM_SERVICE)
    Observable<BaseResultEntity> GetSystemService();

    @FormUrlEncoded
    @POST(Constants.OWN_SHOP_GETSHOPPINGCARTCOUNT)
    Observable<BaseResultEntity<JsonObject>> getCarCountApi(@Field("session") String session, @Field("storeId") String storeId, @Field("closeMall") String closeMall);

    @FormUrlEncoded
    @POST(Constants.OWN_ORDER_USERPACKAGE)
    Observable<BaseResultEntity<List<PackageDetailsModel>>> getPackageApi(@Field("session") String session, @Field("storeId") int storeId);

    @FormUrlEncoded
    @POST(Constants.OWN_ORDER_SERVICELIST)
    Observable<BaseResultEntity<BaseCurrencyListModel<SelectBespokeListModel>>> getBespokeApi(@Field("session") String session, @Field("storeId") String storeId, @Field("page") String page, @Field("size") String size, @Field("serviceName") String serviceName);

    @FormUrlEncoded
    @POST(Constants.OWN_ORDER_USERFAVRITESERVICE)
    Observable<BaseResultEntity<List<OderSerchLeatlyListModel>>> getOderSerchLeatly(@Field("session") String session, @Field("storeId") String storeId, @Field("size") String size);

    @FormUrlEncoded
    @POST(Constants.OWN_ORDER_RESERVATIONSERVICE)
    Observable<BaseResultEntity<OrderSelectSubmitMode>> getReservationService(@Field("session") String session, @Field("storeId") String storeId, @Field("ownerCarId") String ownerCarId
            , @Field("storeServices") String storeServices, @Field("serviceTime") String serviceTime, @Field("note") String note, @Field("userPackageItems") String userPackageItems
    );

    @FormUrlEncoded
    @POST(Constants.OWN_ORDER_RESERVATIONSUCCESS)
    Observable<BaseResultEntity<SelectOrderDetailsModel>> getReservationSuccess(@Field("session") String session, @Field("userOrderId") String userOrderId, @Field("storeId") String storeId);

    @FormUrlEncoded
    @POST(Constants.OWN_ORDER_CANCEL)
    Observable<BaseResultEntity<Object>> getOrderCancle(@Field("session") String session, @Field("userOrderId") String userOrderId, @Field("storeId") String storeId);

    @FormUrlEncoded
    @POST(Constants.OWN_ORDER_SELECTCOUPONS)
    Observable<BaseResultEntity<List<OrderCouponsListModel>>> getSelectCoupons(@Field("session") String session, @Field("userOrderId") String userOrderId, @Field("storeId") String storeId);

    @FormUrlEncoded
    @POST(Constants.OWN_SHOP_MYORDERINF)
    Observable<BaseResultEntity<WorkOrderDetailsModel>> myOrderInf(@Field("session") String session, @Field("orderNumber") String userOrderId);

    @FormUrlEncoded
    @POST(Constants.OWN_CARS)
    Observable<BaseResultEntity<List<CarInfo>>> myCarsList(@Field("session") String session);

    @FormUrlEncoded
    @POST(Constants.SHOP_MALLRATIOGOODS)
    Observable<BaseResultEntity<ParityModel>> mallRatioGoods(@Field("session") String session, @Field("categoryId") String categoryId, @Field("goodsName") String goodsName, @Field("storeId") String storeId
            , @Field("goodsActivityId") String goodsActivityId, @Field("page") String page, @Field("size") String size);

    @FormUrlEncoded
    @POST(Constants.SHOP_MALLRATIOGATEGORYLIST)
    Observable<BaseResultEntity<List<ParityClassifyModel>>> mallRatioCategoryList(@Field("session") String session, @Field("goodsActivityId") String goodsActivityId);

    @FormUrlEncoded
    @POST(Constants.OWN_SHOP_GETSHARECONTENT)
    Observable<BaseResultEntity<LuckDrawModel>> getShareContent(@Field("session") String session);

    @FormUrlEncoded
    @POST(Constants.OWN_SHOP_ADDUSERLUCKDRAWCOUNT)
    Observable<BaseResultEntity<Object>> addUserLuckDrawCount(@Field("session") String session, @Field("platform") String platform, @Field("goodsActivityId") String goodsActivityId);

    @FormUrlEncoded
    @POST(Constants.OWN_BULLETINLIST)
    Observable<BaseResultEntity<BulletinModel>> getBulletinList(@Field("session") String session, @Field("storeId") String storeId, @Field("page") String page, @Field("size") String size);

    @FormUrlEncoded
    @POST(Constants.OWN_PUSHGOODS)
    Observable<BaseResultEntity<Object>> pushGoods(@Field("session") String session, @Field("goodsId") String goodsId);


    @FormUrlEncoded
    @POST(Constants.OWN_STORE_STOREGOODSLISTTAG)
    Observable<BaseResultEntity<StoreGoodsListTagEntity>> getStoreGoodsListTagApi(@Field("session") String session, @Field("storeId") String storeId);

    @FormUrlEncoded
    @POST(Constants.OWN_GETOWNERGROWTHVALUELIST)
    Observable<BaseResultEntity<GrowthValueDetailsModel>> getGrowthValue(@Field("session") String session, @Field("page") String page, @Field("size") String size);

    @FormUrlEncoded
    @POST(Constants.OWN_GETOWNERGROWTHVALUERULE)
    Observable<BaseResultEntity<GrowthDetailsModel>> getGrowthValueDetails(@Field("session") String session);

    @FormUrlEncoded
    @POST(Constants.OWN_RECEIVECOUPONS)
    Observable<BaseResultEntity<Object>> getReceiveCoupons(@Field("session") String session, @Field("couponsGroupId") String couponsGroupId);

    @FormUrlEncoded
    @POST(Constants.OWN_SHOP_GOODSSHARESUCCESS)
    Observable<BaseResultEntity<Object>> getGoodsShare(@Field("session") String session, @Field("goodsId") String goodsId);

    @FormUrlEncoded
    @POST(Constants.OWN_ORDER_ONLINEPAYFAILED)
    Observable<BaseResultEntity<Object>> getPaymentCancle(@Field("session") String session, @Field("userOrderId") String userOrderId, @Field("storeId") String storeId);

    @Multipart
    @POST(Constants.STO_GETVININFO)
    Observable<BaseResultEntity<FrameNumberModel>> getVinInfo(@QueryMap Map<String, Object> maps, @Part List<MultipartBody.Part> parts);
}
